home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Languages Suite
/
ProgramD2.iso
/
Borland
/
Borland C++ V5.02
/
OWLINC.PAK
/
WINDOWEV.H
< prev
next >
Wrap
Text File
|
1997-05-06
|
29KB
|
864 lines
//----------------------------------------------------------------------------
// ObjectWindows
// Copyright (c) 1992, 1997 by Borland International, All Rights Reserved
//
//$Revision: 10.13 $
//
// Event response table macros for windows messages
//----------------------------------------------------------------------------
#if !defined(OWL_WINDOWEV_H)
#define OWL_WINDOWEV_H
#if !defined(OWL_EVENTHAN_H)
# include <owl/eventhan.h>
#endif
//
// General purpose WM_* macro
//
// wparam and lparam are passed, i.e: TParam2 method(TParam1, TParam2)
//
#define EV_MESSAGE(message, method)\
{message, 0, (TAnyDispatcher)::I32_WPARAM_LPARAM_Dispatch,\
(TMyPMF)LRESULT_WPARAM_LPARAM_Sig(&TMyClass::method)}
//
// Registered messages
//
#define EV_REGISTERED(str, method)\
EV_MESSAGE(::RegisterWindowMessage(str), method)
//
// Handler for child ID notifications that are handled at the child's parent
//
// no arguments are passed, i.e: void method()
//
#define EV_CHILD_NOTIFY(id, notifyCode, method)\
{notifyCode, id, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::method)}
//
// Handler for child ID notifications that are handled at the child's parent
//
// The notification code is passed in as an argument; this allows multiple
// notifications to be handled by a single response function, i.e:
// void method(uint notifyCode)
//
#define EV_CHILD_NOTIFY_AND_CODE(id, notifyCode, method)\
{notifyCode, id, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_U_Sig(&TMyClass::method)}
//
// Generic handler for child ID notification: rather than specify the
// specific notification codes you are interested in ALL notifications
// from the child are passed to the response function
//
// The notification code is passed in as an argument, i.e.:
// void method(uint notifyCode)
//
#define EV_CHILD_NOTIFY_ALL_CODES(id, method)\
{UINT_MAX, id, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_U_Sig(&TMyClass::method)}
//
// Handler for child ID notifications that are handled at the child
//
// No arguments are passed, i.e: void method()
//
#define EV_NOTIFY_AT_CHILD(notifyCode, method)\
{notifyCode, UINT_MAX, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::method)}
//
// Handler for menu/accelerator/push buttons
//
// No arguments are passed, i.e: void method()
//
#define EV_COMMAND(id, method)\
{0, id, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::method)}
//
// Handler for menu/accelerator/push buttons
//
// The menu id is passed in as an argument; this allows multiple
// commands to be handled by a single response function.
// void method(uint commandId)
//
#define EV_COMMAND_AND_ID(id, method)\
{0, id, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_U_Sig(&TMyClass::method)}
//
// Handler for command enabling
// void method(uint commandId)
//
#define EV_COMMAND_ENABLE(id, method)\
{WM_COMMAND_ENABLE, id, (TAnyDispatcher)::v_POINTER_Dispatch,\
(TMyPMF)v_COMMANDENABLER_Sig(&TMyClass::method)}
//
// Handlers for document and view notifications
//
#define EV_OWLDOCUMENT(id, method)\
{WM_OWLDOCUMENT, id, (TAnyDispatcher)::v_POINTER_Dispatch,\
(TMyPMF)v_OWLDOCUMENT_Sig(&TMyClass::method)}
#define EV_OWLVIEW(id, method)\
{WM_OWLVIEW, id, (TAnyDispatcher)::v_POINTER_Dispatch,\
(TMyPMF)v_OWLVIEW_Sig(&TMyClass::method)}
#define EV_OWLNOTIFY(id, method)\
{WM_OWLNOTIFY, id, (TAnyDispatcher)::B_LPARAM_Dispatch,\
(TMyPMF)B_LPARAM_Sig(&TMyClass::method)}
#define EV_VIEWNOTIFY(id, method) \
{WM_OWLNOTIFY, id, (TAnyDispatcher)::B_LPARAM_Dispatch, \
(TMyPMF)B_LPARAM_Sig(&TMyClass::method)}
//
// Handler for the OWL frame sizing message
//
#define EV_OWLFRAMESIZE\
{WM_OWLFRAMESIZE, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
(TMyPMF)v_U_SIZE_Sig(&TMyClass::EvOwlFrameSize)}
//
// Macros for specific WM_* messages
//
#define EV_WM_ACTIVATE\
{WM_ACTIVATE, 0, (TAnyDispatcher)::v_Activate_Dispatch,\
(TMyPMF)v_U_B_W_Sig(&TMyClass::EvActivate)}
#define EV_WM_ACTIVATEAPP\
{WM_ACTIVATEAPP, 0, (TAnyDispatcher)::v_B_U_Dispatch,\
(TMyPMF)v_B_HTASK_Sig(&TMyClass::EvActivateApp)}
#define EV_WM_ASKCBFORMATNAME\
{WM_ASKCBFORMATNAME, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
(TMyPMF)v_U_S_Sig(&TMyClass::EvAskCBFormatName)}
#define EV_WM_CANCELMODE\
{WM_CANCELMODE, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvCancelMode)}
#define EV_WM_CHANGECBCHAIN\
{WM_CHANGECBCHAIN, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
(TMyPMF)v_W_W_Sig(&TMyClass::EvChangeCBChain)}
#define EV_WM_CHAR\
{WM_CHAR, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
(TMyPMF)v_U_U_U_Sig(&TMyClass::EvChar)}
#define EV_WM_CHARTOITEM\
{WM_CHARTOITEM, 0, (TAnyDispatcher)::i_U_W_U_Dispatch,\
(TMyPMF)i_U_W_U_Sig(&TMyClass::EvCharToItem)}
#define EV_WM_CHILDACTIVATE\
{WM_CHILDACTIVATE, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvChildActivate)}
#define EV_WM_CHILDINVALID\
{WM_CHILDINVALID, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_W_Sig(&TMyClass::EvChildInvalid)}
#define EV_WM_CLOSE\
{WM_CLOSE, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvClose)}
#define EV_WM_COMMNOTIFY\
{WM_COMMNOTIFY, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
(TMyPMF)v_U_U_Sig(&TMyClass::EvCommNotify)}
#define EV_WM_COMPACTING\
{WM_COMPACTING, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_U_Sig(&TMyClass::EvCompacting)}
#define EV_WM_COMPAREITEM\
{WM_COMPAREITEM, 0, (TAnyDispatcher)::LRESULT_WPARAM_LPARAM_Dispatch,\
(TMyPMF)LRESULT_U_COMPAREITEM_Sig(&TMyClass::EvCompareItem)}
// Win32 only
//
#define EV_WM_COPYDATA\
{WM_COPYDATA, 0, (TAnyDispatcher)::v_HWND_PCOPYDATASTRUCT_Dispatch,\
(TMyPMF)v_HWND_PCOPYDATASTRUCT_Sig(&TMyClass::EvCopyData)}
#define EV_WM_CREATE\
{WM_CREATE, 0, (TAnyDispatcher)::i_LPARAM_Dispatch,\
(TMyPMF)i_CREATE_Sig(&TMyClass::EvCreate)}
#define EV_WM_CTLCOLOR\
{WM_CTLCOLOR, 0, (TAnyDispatcher)::U_U_U_U_Dispatch,\
(TMyPMF)HBRUSH_HDC_W_U_Sig(&TMyClass::EvCtlColor)}
#define EV_WM_DEADCHAR\
{WM_DEADCHAR, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
(TMyPMF)v_U_U_U_Sig(&TMyClass::EvDeadChar)}
#define EV_WM_DELETEITEM\
{WM_DELETEITEM, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
(TMyPMF)v_U_DELETEITEM_Sig(&TMyClass::EvDeleteItem)}
#define EV_WM_DESTROY\
{WM_DESTROY, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvDestroy)}
#define EV_WM_DESTROYCLIPBOARD\
{WM_DESTROYCLIPBOARD, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvDestroyClipboard)}
#define EV_WM_DEVMODECHANGE\
{WM_DEVMODECHANGE, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
(TMyPMF)v_S_Sig(&TMyClass::EvDevModeChange)}
#define EV_WM_DRAWCLIPBOARD\
{WM_DRAWCLIPBOARD, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvDrawClipboard)}
#define EV_WM_DRAWITEM\
{WM_DRAWITEM, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
(TMyPMF)v_U_DRAWITEM_Sig(&TMyClass::EvDrawItem)}
#define EV_WM_DROPFILES\
{WM_DROPFILES, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_DROP_Sig(&TMyClass::EvDropFiles)}
#define EV_WM_ENABLE\
{WM_ENABLE, 0, (TAnyDispatcher)::v_B_Dispatch,\
(TMyPMF)v_B_Sig(&TMyClass::EvEnable)}
#define EV_WM_ENDSESSION\
{WM_ENDSESSION, 0, (TAnyDispatcher)::v_B_B_Dispatch,\
(TMyPMF)v_B_B_Sig(&TMyClass::EvEndSession)}
#define EV_WM_ENTERIDLE\
{WM_ENTERIDLE, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
(TMyPMF)v_U_W_Sig(&TMyClass::EvEnterIdle)}
#define EV_WM_ERASEBKGND\
{WM_ERASEBKGND, 0, (TAnyDispatcher)::B_WPARAM_Dispatch,\
(TMyPMF)B_HDC_Sig(&TMyClass::EvEraseBkgnd)}
#define EV_WM_FONTCHANGE\
{WM_FONTCHANGE, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvFontChange)}
#define EV_WM_GETDLGCODE\
{WM_GETDLGCODE, 0, (TAnyDispatcher)::U_LPARAM_Dispatch,\
(TMyPMF)U_MSG_Sig(&TMyClass::EvGetDlgCode)}
#define EV_WM_GETFONT\
{WM_GETFONT, 0, (TAnyDispatcher)::U_Dispatch,\
(TMyPMF)HFONT_Sig(&TMyClass::EvGetFont)}
#define EV_WM_GETMINMAXINFO\
{WM_GETMINMAXINFO, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
(TMyPMF)v_MINMAXINFO_Sig(&TMyClass::EvGetMinMaxInfo)}
#define EV_WM_GETTEXT\
{WM_GETTEXT, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
(TMyPMF)v_U_S_Sig(&TMyClass::EvGetText)}
#define EV_WM_GETTEXTLENGTH\
{WM_GETTEXTLENGTH, 0, (TAnyDispatcher)::U_Dispatch,\
(TMyPMF)U_Sig(&TMyClass::EvGetTextLength)}
// Win32 only
//
#define EV_WM_HOTKEY\
{WM_HOTKEY, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_i_Sig(&TMyClass::EvHotKey)}
#define EV_WM_HSCROLL\
{WM_HSCROLL, 0, (TAnyDispatcher)::v_U_U_W_Dispatch,\
(TMyPMF)v_U_U_W_Sig(&TMyClass::EvHScroll)}
#define EV_WM_HSCROLLCLIPBOARD\
{WM_HSCROLLCLIPBOARD, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
(TMyPMF)v_W_U_U_Sig(&TMyClass::EvHScrollClipboard)}
#define EV_WM_ICONERASEBKGND\
{WM_ICONERASEBKGND, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_HDC_Sig(&TMyClass::EvIconEraseBkgnd)}
#define EV_WM_INITMENU\
{WM_INITMENU, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_HMENU_Sig(&TMyClass::EvInitMenu)}
#define EV_WM_INITMENUPOPUP\
{WM_INITMENUPOPUP, 0, (TAnyDispatcher)::v_U_U_B_Dispatch,\
(TMyPMF)v_HMENU_U_B_Sig(&TMyClass::EvInitMenuPopup)}
#define EV_WM_KEYDOWN\
{WM_KEYDOWN, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
(TMyPMF)v_U_U_U_Sig(&TMyClass::EvKeyDown)}
#define EV_WM_KEYUP\
{WM_KEYUP, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
(TMyPMF)v_U_U_U_Sig(&TMyClass::EvKeyUp)}
#define EV_WM_KILLFOCUS\
{WM_KILLFOCUS, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_W_Sig(&TMyClass::EvKillFocus)}
#define EV_WM_LBUTTONDBLCLK\
{WM_LBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvLButtonDblClk)}
#define EV_WM_LBUTTONDOWN\
{WM_LBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvLButtonDown)}
#define EV_WM_LBUTTONUP\
{WM_LBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvLButtonUp)}
#define EV_WM_MBUTTONDBLCLK\
{WM_MBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvMButtonDblClk)}
#define EV_WM_MBUTTONDOWN\
{WM_MBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvMButtonDown)}
#define EV_WM_MBUTTONUP\
{WM_MBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvMButtonUp)}
#define EV_WM_MDIACTIVATE\
{WM_MDIACTIVATE, 0, (TAnyDispatcher)::v_MdiActivate_Dispatch,\
(TMyPMF)v_W_W_Sig(&TMyClass::EvMDIActivate)}
#define EV_WM_MDICREATE\
{WM_MDICREATE, 0, (TAnyDispatcher)::i_LPARAM_Dispatch,\
(TMyPMF)LRESULT_MDICREATESTRUCT_Sig(&TMyClass::EvMDICreate)}
#define EV_WM_MDIDESTROY\
{WM_MDIDESTROY, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_W_Sig(&TMyClass::EvMDIDestroy)}
#define EV_WM_MENUCHAR\
{WM_MENUCHAR, 0, (TAnyDispatcher)::I32_MenuChar_Dispatch,\
(TMyPMF)LRESULT_U_U_HMENU_Sig(&TMyClass::EvMenuChar)}
#define EV_WM_MENUSELECT\
{WM_MENUSELECT, 0, (TAnyDispatcher)::v_U_U_W_Dispatch,\
(TMyPMF)v_U_U_HMENU_Sig(&TMyClass::EvMenuSelect)}
#define EV_WM_MEASUREITEM\
{WM_MEASUREITEM, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
(TMyPMF)v_U_MEASUREITEM_Sig(&TMyClass::EvMeasureItem)}
#define EV_WM_MOUSEACTIVATE\
{WM_MOUSEACTIVATE, 0, (TAnyDispatcher)::U_U_U_U_Dispatch,\
(TMyPMF)U_W_U_U_Sig(&TMyClass::EvMouseActivate)}
#define EV_WM_MOUSEMOVE\
{WM_MOUSEMOVE, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvMouseMove)}
#define EV_WM_MOVE\
{WM_MOVE, 0, (TAnyDispatcher)::v_POINT_Dispatch,\
(TMyPMF)v_POINT_Sig(&TMyClass::EvMove)}
#define EV_WM_NCACTIVATE\
{WM_NCACTIVATE, 0, (TAnyDispatcher)::B_B_Dispatch,\
(TMyPMF)B_B_Sig(&TMyClass::EvNCActivate)}
#define EV_WM_NCCALCSIZE\
{WM_NCCALCSIZE, 0, (TAnyDispatcher)::U_B_LPARAM_Dispatch,\
(TMyPMF)U_B_CALCSIZE_Sig(&TMyClass::EvNCCalcSize)}
#define EV_WM_NCCREATE\
{WM_NCCREATE, 0, (TAnyDispatcher)::B_LPARAM_Dispatch,\
(TMyPMF)B_CREATE_Sig(&TMyClass::EvNCCreate)}
#define EV_WM_NCDESTROY\
{WM_NCDESTROY, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvNCDestroy)}
#define EV_WM_NCHITTEST\
{WM_NCHITTEST, 0, (TAnyDispatcher)::U_POINT_Dispatch,\
(TMyPMF)U_POINT_Sig(&TMyClass::EvNCHitTest)}
#define EV_WM_NCLBUTTONDBLCLK\
{WM_NCLBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCLButtonDblClk)}
#define EV_WM_NCLBUTTONDOWN\
{WM_NCLBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCLButtonDown)}
#define EV_WM_NCLBUTTONUP\
{WM_NCLBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCLButtonUp)}
#define EV_WM_NCMBUTTONDBLCLK\
{WM_NCMBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCMButtonDblClk)}
#define EV_WM_NCMBUTTONDOWN\
{WM_NCMBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCMButtonDown)}
#define EV_WM_NCMBUTTONUP\
{WM_NCMBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCMButtonUp)}
#define EV_WM_NCMOUSEMOVE\
{WM_NCMOUSEMOVE, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCMouseMove)}
// WM_NCPAINT has different parameters for 16 and 32bit
//
#if defined(BI_PLAT_WIN32)
#define EV_WM_NCPAINT\
{WM_NCPAINT, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_HRGN_Sig(&TMyClass::EvNCPaint)}
#else
#define EV_WM_NCPAINT\
{WM_NCPAINT, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvNCPaint)}
#endif //BI_PLAT_WIN32
#define EV_WM_NCRBUTTONDBLCLK\
{WM_NCRBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCRButtonDblClk)}
#define EV_WM_NCRBUTTONDOWN\
{WM_NCRBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCRButtonDown)}
#define EV_WM_NCRBUTTONUP\
{WM_NCRBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvNCRButtonUp)}
#define EV_WM_NEXTDLGCTL\
{WM_NEXTDLGCTL, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
(TMyPMF)v_U_U_Sig(&TMyClass::EvNextDlgCtl)}
#define EV_WM_PAINT\
{WM_PAINT, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvPaint)}
#define EV_WM_PAINTCLIPBOARD\
{WM_PAINTCLIPBOARD, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
(TMyPMF)v_W_H_Sig(&TMyClass::EvPaintClipboard)}
// Win32 only
//
#define EV_WM_PAINTICON\
{WM_PAINTICON, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvPaintIcon)}
#define EV_WM_PALETTECHANGED\
{WM_PALETTECHANGED, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_W_Sig(&TMyClass::EvPaletteChanged)}
#define EV_WM_PALETTEISCHANGING\
{WM_PALETTEISCHANGING, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_W_Sig(&TMyClass::EvPaletteIsChanging)}
#define EV_WM_PARENTNOTIFY\
{WM_PARENTNOTIFY, 0, (TAnyDispatcher)::v_ParentNotify_Dispatch,\
(TMyPMF)v_U_U_U_Sig(&TMyClass::EvParentNotify)}
#define EV_WM_POWER\
{WM_POWER, 0, (TAnyDispatcher)::i_WPARAM_Dispatch,\
(TMyPMF)i_U_Sig(&TMyClass::EvPower)}
#define EV_WM_QUERYDRAGICON\
{WM_QUERYDRAGICON, 0, (TAnyDispatcher)::U_Dispatch,\
(TMyPMF)H_Sig(&TMyClass::EvQueryDragIcon)}
#define EV_WM_QUERYENDSESSION\
{WM_QUERYENDSESSION, 0, (TAnyDispatcher)::B_Dispatch,\
(TMyPMF)B_Sig(&TMyClass::EvQueryEndSession)}
#define EV_WM_QUERYNEWPALETTE\
{WM_QUERYNEWPALETTE, 0, (TAnyDispatcher)::B_Dispatch,\
(TMyPMF)B_Sig(&TMyClass::EvQueryNewPalette)}
#define EV_WM_QUERYOPEN\
{WM_QUERYOPEN, 0, (TAnyDispatcher)::B_Dispatch,\
(TMyPMF)B_Sig(&TMyClass::EvQueryOpen)}
#define EV_WM_QUEUESYNC\
{WM_QUEUESYNC, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvQueueSync)}
#define EV_WM_RBUTTONDBLCLK\
{WM_RBUTTONDBLCLK, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvRButtonDblClk)}
#define EV_WM_RBUTTONDOWN\
{WM_RBUTTONDOWN, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvRButtonDown)}
#define EV_WM_RBUTTONUP\
{WM_RBUTTONUP, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvRButtonUp)}
#define EV_WM_RENDERALLFORMATS\
{WM_RENDERALLFORMATS, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvRenderAllFormats)}
#define EV_WM_RENDERFORMAT\
{WM_RENDERFORMAT, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_U_Sig(&TMyClass::EvRenderFormat)}
#define EV_WM_SETCURSOR\
{WM_SETCURSOR, 0, (TAnyDispatcher)::B_U_U_U_Dispatch,\
(TMyPMF)B_W_U_U_Sig(&TMyClass::EvSetCursor)}
#define EV_WM_SETFOCUS\
{WM_SETFOCUS, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_W_Sig(&TMyClass::EvSetFocus)}
#define EV_WM_SETFONT\
{WM_SETFONT, 0, (TAnyDispatcher)::v_U_B_Dispatch,\
(TMyPMF)v_HFONT_B_Sig(&TMyClass::EvSetFont)}
#define EV_WM_SETREDRAW\
{WM_SETREDRAW, 0, (TAnyDispatcher)::v_B_Dispatch,\
(TMyPMF)v_B_Sig(&TMyClass::EvSetRedraw)}
#define EV_WM_SETTEXT\
{WM_SETTEXT, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
(TMyPMF)v_CS_Sig(&TMyClass::EvSetText)}
#define EV_WM_SHOWWINDOW\
{WM_SHOWWINDOW, 0, (TAnyDispatcher)::v_B_U_Dispatch,\
(TMyPMF)v_B_U_Sig(&TMyClass::EvShowWindow)}
#define EV_WM_SIZE\
{WM_SIZE, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_SIZE_Sig(&TMyClass::EvSize)}
#define EV_WM_SIZECLIPBOARD\
{WM_SIZECLIPBOARD, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
(TMyPMF)v_W_H_Sig(&TMyClass::EvSizeClipboard)}
#define EV_WM_SPOOLERSTATUS\
{WM_SPOOLERSTATUS, 0, (TAnyDispatcher)::v_U_U_Dispatch,\
(TMyPMF)v_U_U_Sig(&TMyClass::EvSpoolerStatus)}
#define EV_WM_SYSCHAR\
{WM_SYSCHAR, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
(TMyPMF)v_U_U_U_Sig(&TMyClass::EvSysChar)}
#define EV_WM_SYSCOLORCHANGE\
{WM_SYSCOLORCHANGE, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvSysColorChange)}
#define EV_WM_SYSCOMMAND\
{WM_SYSCOMMAND, 0, (TAnyDispatcher)::v_U_POINT_Dispatch,\
(TMyPMF)v_U_POINT_Sig(&TMyClass::EvSysCommand)}
#define EV_WM_SYSDEADCHAR\
{WM_SYSDEADCHAR, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
(TMyPMF)v_U_U_U_Sig(&TMyClass::EvSysDeadChar)}
#define EV_WM_SYSKEYDOWN\
{WM_SYSKEYDOWN, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
(TMyPMF)v_U_U_U_Sig(&TMyClass::EvSysKeyDown)}
#define EV_WM_SYSKEYUP\
{WM_SYSKEYUP, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
(TMyPMF)v_U_U_U_Sig(&TMyClass::EvSysKeyUp)}
#define EV_WM_SYSTEMERROR\
{WM_SYSTEMERROR, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_U_Sig(&TMyClass::EvSystemError)}
#define EV_WM_TIMECHANGE\
{WM_TIMECHANGE, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvTimeChange)}
#define EV_WM_TIMER\
{WM_TIMER, 0, (TAnyDispatcher)::v_WPARAM_Dispatch,\
(TMyPMF)v_U_Sig(&TMyClass::EvTimer)}
#define EV_WM_VKEYTOITEM\
{WM_VKEYTOITEM, 0, (TAnyDispatcher)::i_U_W_U_Dispatch,\
(TMyPMF)i_U_W_U_Sig(&TMyClass::EvVKeyToItem)}
#define EV_WM_VSCROLL\
{WM_VSCROLL, 0, (TAnyDispatcher)::v_U_U_W_Dispatch,\
(TMyPMF)v_U_U_W_Sig(&TMyClass::EvVScroll)}
#define EV_WM_VSCROLLCLIPBOARD\
{WM_VSCROLLCLIPBOARD, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
(TMyPMF)v_W_U_U_Sig(&TMyClass::EvVScrollClipboard)}
#define EV_WM_WINDOWPOSCHANGED\
{WM_WINDOWPOSCHANGED, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
(TMyPMF)v_WINDOWPOS_Sig(&TMyClass::EvWindowPosChanged)}
#define EV_WM_WINDOWPOSCHANGING\
{WM_WINDOWPOSCHANGING, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
(TMyPMF)v_WINDOWPOS_Sig(&TMyClass::EvWindowPosChanging)}
#define EV_WM_WININICHANGE\
{WM_WININICHANGE, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
(TMyPMF)v_S_Sig(&TMyClass::EvWinIniChange)}
//
//
//
#define EV_WM_SETTINGCHANGE\
{WM_SETTINGCHANGE, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
(TMyPMF)v_U_CS_Sig(&TMyClass::EvSettingChange)}
#define EV_WM_DISPLAYCHANGE\
{WM_DISPLAYCHANGE, 0, (TAnyDispatcher)::v_B_U_U_Dispatch,\
(TMyPMF)v_B_I_I_Sig(&TMyClass::EvDisplayChange)}
//WM_NOTIFY // Not dispatched, use virtual
#define EV_WM_INPUTLANGCHANGEREQUEST\
{WM_INPUTLANGCHANGEREQUEST, 0, (TAnyDispatcher)::B_B_U_Dispatch,\
(TMyPMF)B_B_HKL_Sig(&TMyClass::EvInputLangChangeRequest)}
#define EV_WM_INPUTLANGCHANGE\
{WM_INPUTLANGCHANGE, 0, (TAnyDispatcher)::B_U_U_Dispatch,\
(TMyPMF)B_I_HKL_Sig(&TMyClass::EvInputLangChange)}
#define EV_WM_TCARD\
{WM_TCARD, 0, (TAnyDispatcher)::v_U_U32_Dispatch,\
(TMyPMF)v_I_I32_Sig(&TMyClass::EvTCard)}
#define EV_WM_HELP\
{WM_HELP, 0, (TAnyDispatcher)::v_LPARAM_Dispatch,\
(TMyPMF)v_HELPINFO_Sig(&TMyClass::EvHelp)}
#define EV_WM_USERCHANGED\
{WM_USERCHANGED, 0, (TAnyDispatcher)::B_Dispatch,\
(TMyPMF)B_Sig(&TMyClass::EvUserChanged)}
#define EV_WM_CONTEXTMENU\
{WM_CONTEXTMENU, 0, (TAnyDispatcher)::v_U_U_U_Dispatch,\
(TMyPMF)v_W_I_I_Sig(&TMyClass::EvContextMenu)}
#define EV_WM_STYLECHANGING\
{WM_STYLECHANGING, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
(TMyPMF)v_U_STYLE_Sig(&TMyClass::EvStyleChanging)}
#define EV_WM_STYLECHANGED\
{WM_STYLECHANGED, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
(TMyPMF)v_U_STYLE_Sig(&TMyClass::EvStyleChanged)}
#define EV_WM_GETICON\
{WM_GETICON, 0, (TAnyDispatcher)::U_B_Dispatch,\
(TMyPMF)HICON_B_Sig(&TMyClass::EvGetIcon)}
#define EV_WM_SETICON\
{WM_SETICON, 0, (TAnyDispatcher)::U_B_U_Dispatch,\
(TMyPMF)HICON_B_HICON_Sig(&TMyClass::EvSetIcon)}
#define EV_WM_SIZING\
{WM_SIZING, 0, (TAnyDispatcher)::B_U_RECT_Dispatch,\
(TMyPMF)B_U_RECT_Sig(&TMyClass::EvSizing)}
#define EV_WM_CAPTURECHANGED\
{WM_CAPTURECHANGED, 0, (TAnyDispatcher)::v_U_Dispatch,\
(TMyPMF)v_W_Sig(&TMyClass::EvCaptureChanged)}
#define EV_WM_MOVING\
{WM_MOVING, 0, (TAnyDispatcher)::B_U_RECT_Dispatch,\
(TMyPMF)B_U_RECT_Sig(&TMyClass::EvMoving)}
#define EV_WM_ENTERSIZEMOVE\
{WM_ENTERSIZEMOVE, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
#define EV_WM_EXITSIZEMOVE\
{WM_EXITSIZEMOVE, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvExitSizeMove)}
#define EV_WM_POWERBROADCAST\
{WM_POWERBROADCAST, 0, (TAnyDispatcher)::B_WPARAM_LPARAM_Dispatch,\
(TMyPMF)B_U_U_Sig(&TMyClass::Ev)}
//
#if 0
#define EV_WM_DEVICECHANGE\
{WM_DEVICECHANGE, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
#endif
#if 0
//WM_IME_SETCONTEXT
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
//WM_IME_NOTIFY
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
//WM_IME_CONTROL
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
//WM_IME_COMPOSITIONFULL
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
//WM_IME_SELECT
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
//WM_IME_CHAR
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
//WM_IME_KEYDOWN
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
//WM_IME_KEYUP
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
//
//WM_IME_STARTCOMPOSITION
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
//WM_IME_ENDCOMPOSITION
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
//WM_IME_COMPOSITION
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
//WM_IME_KEYLAST
#define EV_\
{xxx, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::Ev)}
#endif
#define EV_WM_ENTERMENULOOP\
{WM_ENTERMENULOOP, 0, (TAnyDispatcher)::v_B_Dispatch,\
(TMyPMF)v_B_Sig(&TMyClass::EvEnterMenuLoop)}
#define EV_WM_EXITMENULOOP\
{WM_EXITMENULOOP, 0, (TAnyDispatcher)::v_B_Dispatch,\
(TMyPMF)v_B_Sig(&TMyClass::EvExitMenuLoop)}
//
#if 0
#define EV_WM_NEXTMENU\
{WM_NEXTMENU, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvNextMenu)}
#endif
#define EV_WM_PRINT\
{WM_PRINT, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
(TMyPMF)v_HDC_U_Sig(&TMyClass::Ev)}
#define EV_WM_PRINTCLIENT\
{WM_PRINTCLIENT, 0, (TAnyDispatcher)::v_WPARAM_LPARAM_Dispatch,\
(TMyPMF)v_HDC_U_Sig(&TMyClass::Ev)}
//WM_HANDHELDFIRST
//WM_HANDHELDLAST
//WM_AFXFIRST
//WM_AFXLAST
//WM_APP
//WM_USER
//
// Dialog messages
//
#define EV_DM_GETDEFID\
{DM_GETDEFID, 0, (TAnyDispatcher)::U32_Dispatch,\
(TMyPMF)U32_Sig(&TMyClass::EvGetDefId)}
#define EV_DM_SETDEFID\
{DM_SETDEFID, 0, (TAnyDispatcher)::B_WPARAM_Dispatch,\
(TMyPMF)B_I_Sig(&TMyClass::EvSetDefId)}
#if defined(BI_PLAT_WIN32)
# define EV_DM_REPOSITION\
{DM_REPOSITION, 0, (TAnyDispatcher)::v_Dispatch,\
(TMyPMF)v_Sig(&TMyClass::EvReposition)}
#endif
//
// Control notification macros
//
#define EV_BN_CLICKED(id, method) EV_CHILD_NOTIFY(id, BN_CLICKED, method)
#define EV_BN_DISABLE(id, method) EV_CHILD_NOTIFY(id, BN_DISABLE, method)
#define EV_BN_DOUBLECLICKED(id, method) EV_CHILD_NOTIFY(id, BN_DOUBLECLICKED, method)
#define EV_BN_HILITE(id, method) EV_CHILD_NOTIFY(id, BN_HILITE, method)
#define EV_BN_PAINT(id, method) EV_CHILD_NOTIFY(id, BN_PAINT, method)
#define EV_BN_UNHILITE(id, method) EV_CHILD_NOTIFY(id, BN_UNHILITE, method)
#if defined(BI_PLAT_WIN32)
#define EV_BN_KILLFOCUS(id, method) EV_CHILD_NOTIFY(id, BN_KILLFOCUS, method)
#define EV_BN_SETFOCUS(id, method) EV_CHILD_NOTIFY(id, BN_SETFOCUS, method)
#endif
#define EV_CBN_CLOSEUP(id, method) EV_CHILD_NOTIFY(id, CBN_CLOSEUP, method)
#define EV_CBN_DBLCLK(id, method) EV_CHILD_NOTIFY(id, CBN_DBLCLK, method)
#define EV_CBN_DROPDOWN(id, method) EV_CHILD_NOTIFY(id, CBN_DROPDOWN, method)
#define EV_CBN_EDITCHANGE(id, method) EV_CHILD_NOTIFY(id, CBN_EDITCHANGE, method)
#define EV_CBN_EDITUPDATE(id, method) EV_CHILD_NOTIFY(id, CBN_EDITUPDATE, method)
#define EV_CBN_ERRSPACE(id, method) EV_CHILD_NOTIFY(id, CBN_ERRSPACE, method)
#define EV_CBN_KILLFOCUS(id, method) EV_CHILD_NOTIFY(id, CBN_KILLFOCUS, method)
#define EV_CBN_SELCHANGE(id, method) EV_CHILD_NOTIFY(id, CBN_SELCHANGE, method)
#define EV_CBN_SELENDCANCEL(id, method) EV_CHILD_NOTIFY(id, CBN_SELENDCANCEL, method)
#define EV_CBN_SELENDOK(id, method) EV_CHILD_NOTIFY(id, CBN_SELENDOK, method)
#define EV_CBN_SETFOCUS(id, method) EV_CHILD_NOTIFY(id, CBN_SETFOCUS, method)
#define EV_EN_CHANGE(id, method) EV_CHILD_NOTIFY(id, EN_CHANGE, method)
#define EV_EN_ERRSPACE(id, method) EV_CHILD_NOTIFY(id, EN_ERRSPACE, method)
#define EV_EN_HSCROLL(id, method) EV_CHILD_NOTIFY(id, EN_HSCROLL, method)
#define EV_EN_KILLFOCUS(id, method) EV_CHILD_NOTIFY(id, EN_KILLFOCUS, method)
#define EV_EN_MAXTEXT(id, method) EV_CHILD_NOTIFY(id, EN_MAXTEXT, method)
#define EV_EN_SETFOCUS(id, method) EV_CHILD_NOTIFY(id, EN_SETFOCUS, method)
#define EV_EN_UPDATE(id, method) EV_CHILD_NOTIFY(id, EN_UPDATE, method)
#define EV_EN_VSCROLL(id, method) EV_CHILD_NOTIFY(id, EN_VSCROLL, method)
#define EV_LBN_DBLCLK(id, method) EV_CHILD_NOTIFY(id, LBN_DBLCLK, method)
#define EV_LBN_ERRSPACE(id, method) EV_CHILD_NOTIFY(id, LBN_ERRSPACE, method)
#define EV_LBN_KILLFOCUS(id, method) EV_CHILD_NOTIFY(id, LBN_KILLFOCUS, method)
#define EV_LBN_SELCANCEL(id, method) EV_CHILD_NOTIFY(id, LBN_SELCANCEL, method)
#define EV_LBN_SELCHANGE(id, method) EV_CHILD_NOTIFY(id, LBN_SELCHANGE, method)
#define EV_LBN_SETFOCUS(id, method) EV_CHILD_NOTIFY(id, LBN_SETFOCUS, method)
#define EV_SB_LINEDOWN(id, method) EV_CHILD_NOTIFY(id, SB_LINEDOWN, method)
#define EV_SB_LINEUP(id, method) EV_CHILD_NOTIFY(id, SB_LINEUP, method)
#define EV_SB_PAGEDOWN(id, method) EV_CHILD_NOTIFY(id, SB_PAGEDOWN, method)
#define EV_SB_PAGEUP(id, method) EV_CHILD_NOTIFY(id, SB_PAGEUP, method)
#define EV_SB_TOP(id, method) EV_CHILD_NOTIFY(id, SB_TOP, method)
#define EV_SB_BOTTOM(id, method) EV_CHILD_NOTIFY(id, SB_BOTTOM, method)
#define EV_SB_THUMBPOSITION(id, method) EV_CHILD_NOTIFY(id, SB_THUMBPOSITION, method)
#define EV_SB_ENDSCROLL(id, method) EV_CHILD_NOTIFY(id, SB_ENDSCROLL, method)
#define EV_SB_BEGINTRACK(id, method) EV_CHILD_NOTIFY(id, 9, method)
#if defined(BI_PLAT_WIN32)
#define EV_STN_DBLCLK(id, method) EV_CHILD_NOTIFY(id, STN_DBLCLK, method)
#define EV_STN_CLICKED(id, method) EV_CHILD_NOTIFY(id, STN_CLICKED, method)
#define EV_STN_DISABLE(id, method) EV_CHILD_NOTIFY(id, STN_DISABLE, method)
#define EV_STN_ENABLE(id, method) EV_CHILD_NOTIFY(id, STN_ENABLE, method)
#endif
#endif // OWL_WINDOWEV_H